class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        ListNode*newhead=new ListNode(0);
        newhead->next=head;
        ListNode*prev=newhead;
        for(int i=1;i<left;i++)
        {
            prev=prev->next;
        }
         ListNode* pre = nullptr;
        ListNode*cur=prev->next;
        for(int i=0;i<right-left+1;i++)
        {
            ListNode*next=cur->next;
            cur->next=pre;
            pre=cur;
            cur=next;

        }
        prev->next->next=cur;
        prev->next=pre;

        return newhead->next;
    }
};